package com.zyf.project.binaryproto.contract;

/**
 * <h1>属性</h1>
 *
 * @author Zhou Yifan
 */
public interface TypeAttribute {

    /**
     * 属性名称；
     *
     * @return 字符串
     */
    String getName();

    /**
     * 值类型；
     *
     * @return {@link Class}
     */
    Class<?> getValueType();

    /**
     * <p>值的读取器的名称</p>
     * <p>与特定语言相关</p>
     *
     * @return 字符串
     */
    String getReaderName();

    /**
     * <p>值的读取器的种类</p>
     * <p>与特定语言相关，对于 Java 语言，有 METHOD、FIELD</p>
     *
     * @return 字符串
     */
    String getReaderType();

}
